﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using upcdew_20111_group2b.CapaDominio;
using upcdew_20111_group2b.CapaPersistencia;

namespace upcdew_20111_group2b.CapaPrueba
{
    [TestFixture]
    public class TestReservaDAO
    {
        // 1. Instancia el objeto DAO
        private ReservaDAO reservaDAO = new ReservaDAO();        

        [Test]
        public void TestCrear()
        {
            // 2. Instanciando el objeto TO
            Area_Comun area_comun = new Area_Comun();
            area_comun.CodAreaComun = "A00001";

            Residente residente = new Residente();
            residente.CodResidente = "12345678";

            Reserva nuevaReserva = new Reserva();

            // 3. Agregamos los valores del objeto TO                        
            nuevaReserva.CodReserva = "1";
            nuevaReserva.CodAreaComun = area_comun;
            nuevaReserva.CodResidente = residente;
            nuevaReserva.Fec_Reserva = DateTime.Parse("18/07/2011");
            nuevaReserva.Num_Personas = 10;
            nuevaReserva.Tex_Comentario = "Se realizara una fiesta infantil en dicho area comun";

            Reserva creadoReserva = reservaDAO.Crear(nuevaReserva);
        }
            
        [Test]
        public void TestModificar()
        {
            Residente residente = new Residente();
            residente.CodResidente = "12345678";

            Area_Comun area_comun = new Area_Comun();
            area_comun.CodAreaComun = "A00001";

            // 2. Instanciamos el objeto TO
            Vivienda ViviendaModificar = new Vivienda();
            Reserva modificaReserva = new Reserva();
                     
            modificaReserva.CodReserva = "1";
            modificaReserva.CodAreaComun = area_comun;
            modificaReserva.CodResidente = residente;
            modificaReserva.Fec_Reserva = DateTime.Parse("18/07/2011");
            modificaReserva.Num_Personas = 20;
            modificaReserva.Tex_Comentario = "Se realizara una fiesta infantil en dicho area comun";


            // 3. Llamada al método del DAO a probar
            Reserva ReservaObtenido = reservaDAO.Modificar(modificaReserva);
            // 4. Implementar las validaciones
            Assert.NotNull(ReservaObtenido);
            //Assert.AreEqual(ViviendaModificar.Correo, tutorObtenido.Correo);

        }
        [Test]
        public void TestEliminar()
        {

            // 2. Instanciamos el objeto TO
            Reserva reservaEliminar = new Reserva();
            reservaEliminar.CodReserva = "1";
            // 3. Llamada al método del DAO a probar
            Assert.Catch<Exception>(delegate
            {
                reservaDAO.Eliminar(reservaEliminar);
            });
            Assert.DoesNotThrow(delegate
            {
                reservaDAO.Eliminar(reservaEliminar);
            });

            // 4. Implementar las validaciones
            Assert.NotNull(reservaEliminar);
            Assert.NotNull(reservaEliminar.CodReserva);


        }
        [Test]
        public void TestObtener()
        {
            // 2. Instanciamos el objeto TO
            String codigo = "V00001";
            // 3. Llamada al método del DAO a probar
            Reserva ReservaObtenido = reservaDAO.Obtener(codigo);
            // 4. Implementar las validaciones
            Assert.NotNull(ReservaObtenido);
            Assert.AreEqual(codigo, ReservaObtenido.CodReserva);
            Assert.NotNull(ReservaObtenido.Num_Personas);
        }

        [Test]
        public void ListarReservaPorComent()
        {
            string coment = "fiesta";
            ICollection<Reserva> Lreserva = reservaDAO.ListarReservaPorComent(coment);
            Assert.NotNull(Lreserva);
            Assert.LessOrEqual(Lreserva.Count, 0);
        }        
    }
}